#include "esp_log.h"
#include "app_vars.h"

static cJSON *configJson=NULL;
// 定义全局结构体变量
AppGlobalConfig appConfig = {
.hasConnected=false,
.ipAddr =NULL,
.macAddr=NULL,
.nickName=NULL,
.devcCode = NULL,
.tcpLinked=false,
.km=false,
.time=0
};
void initAppConfiguration(){
appConfig.ipAddr=(char *)malloc(16);
configJson=cJSON_CreateObject();    
cJSON_AddStringToObject(configJson, "device", "hid");
cJSON_AddStringToObject(configJson, "mac", "");
cJSON_AddStringToObject(configJson, "ip", "");    
cJSON_AddItemToObject(configJson, "linked", cJSON_CreateBool(appConfig.tcpLinked));
cJSON_AddItemToObject(configJson, "km", cJSON_CreateBool(appConfig.km));
cJSON_AddStringToObject(configJson, "nick", "");

cJSON_AddStringToObject(configJson, "code", "");
cJSON_AddNumberToObject(configJson, "t", 0);
}







static void refreshJsonVals(){

if(appConfig.nickName==NULL){
    cJSON_ReplaceItemInObject(configJson, "nick", cJSON_CreateString(""));     
    }else{
    cJSON_ReplaceItemInObject(configJson, "nick", cJSON_CreateString(appConfig.nickName)); 
    }

if(appConfig.devcCode==NULL){
    cJSON_ReplaceItemInObject(configJson, "code", cJSON_CreateString(""));     
    }else{
    cJSON_ReplaceItemInObject(configJson, "code", cJSON_CreateString(appConfig.devcCode)); 
    }

    cJSON_ReplaceItemInObject(configJson, "linked", cJSON_CreateBool(appConfig.tcpLinked)); // 更新为 false
    cJSON_ReplaceItemInObject(configJson, "km", cJSON_CreateBool(appConfig.km)); // 更新为 false
    cJSON_ReplaceItemInObject(configJson, "t", cJSON_CreateNumber(appConfig.time)); // 更新为 false


if(appConfig.ipAddr==NULL){
    cJSON_ReplaceItemInObject(configJson, "ip", cJSON_CreateString(""));     
    }else{
    cJSON_ReplaceItemInObject(configJson, "ip", cJSON_CreateString(appConfig.ipAddr)); 
    }

if(appConfig.macAddr==NULL){
    cJSON_ReplaceItemInObject(configJson, "mac", cJSON_CreateString(""));     
    }else{
    cJSON_ReplaceItemInObject(configJson, "mac", cJSON_CreateString(appConfig.macAddr)); 
    }

}

char * getAppConfigJson(){
    refreshJsonVals();
    return cJSON_PrintUnformatted(configJson);
}

